<?php
/*
* @desc Inclui a classe Model.
* @param Class Model
*/
include_once("Model.class.php");

class Paginacao extends Model{
		
	// Variavel global de conexao ao BD
	private $mySQL;
	// Variaveis necessarias
	public $tabela_bd;
	public $numPg;
	public $limite;
	public $chave_primaria;
    public $titulo;
    public $url_bt_alterar;
    public $url_bt_remover;
    public $url_pagina;
    public $diretorio_bt_imgs;
    public $numPgs;
	public $total;
	public $inicio;
	public $conta;
	public $url;
	public $result_while;
	public $cp; //Chave pimaria
	public $ti;
	public $order_by_query; // Ordena a consulta por esta variavel
	// Codigo html da paginacao
	public $htmlCode;

	
		
   /*
	* @desc Metodo construtor da classe Paginacao.
    * @param Construtor
    */
    function __construct($tabela_bd, $numPg, $limite, $chave_primaria, $titulo, $url_bt_alterar, $url_bt_remover, $url_pagina, $diretorio_bt_imgs, $order_by_query)
	{
		//seta os valores default
		$this->tabela_bd			= $tabela_bd;
		$this->numPg 				= $numPg;
		$this->limite 				= $limite;
		$this->chave_primaria		= $chave_primaria;
		$this->titulo				= $titulo;
		$this->url_bt_alterar		= $url_bt_alterar;
		$this->url_bt_remover		= $url_bt_remover;
		$this->url_pagina			= $url_pagina;
		$this->diretorio_bt_imgs	= $diretorio_bt_imgs;
		$this->result_while			= "";
		$this->order_by_query		= $order_by_query;
		// Seta como vazio o codigo html
		$this->htmlCode				= "";
		
		
		/* 
		 * @desc Inclui a classe Banco
		 * @param mySQL = 	Objeto para conexao
		 * 					Instancia um objeto para conexao ao Banco
		 */
		@include_once("Banco.class.php");
     	$this->mySQL = new Banco;
	}
	
	
	
	/*
	 * @desc Realiza a paginacao dos dados
	 * @param Metodo paginacaoDados() 
	 */
	function paginacaoDados()
	{
		// Executa a query ($total)
		$result = $this->mySQL->sql("SELECT count(*) as total FROM $this->tabela_bd");
		// Obtem o numero de linhas da tabela afetado pela consulta
		$this->total = mysql_result($result, 0, "total");
		
		// Verifico o numero da pagina atual
		if(isset($this->numPg))
		{
			$this->numPg = $this->numPg;
		}
		else
		{
			$this->numPg = 0;
		}
		
		
		// Verifico o numero de paginas a ser exibidas
		$this->numPgs = ceil($this->total / $this->limite);
		// Defino o inicio da paginacao
		$this->inicio = $this->numPg * $this->limite;	
		
		// Executa a query (define o limite de exibicoes por pagina)
		$this->result_while = $this->mySQL->sql("SELECT * FROM $this->tabela_bd ORDER BY $this->order_by_query ASC LIMIT $this->inicio,$this->limite");
		// Obtem o numero de linhas da tabela afetado pela consulta
		$this->conta = $this->mySQL->affected_rows;
			
	}
	
	
	function show()
	{
		// Exibe os resultados a serem paginados
		while($l = mysql_fetch_array($this->result_while)) {
		
		$this->cp = $l[$this->chave_primaria];
		$this->ti = $l[$this->titulo];	
		
		// Limita a exibicao do titulo em 45 caracteres
		$max =55;
		$tc = 0;
		$tam = strlen($this->ti);
		if($tam>$max){
		$sum = $tc - $max;
		$this->ti = substr($this->ti,0,-$sum)."...";
		}
		
		
		echo "<!-- xxxxx item xxxxx-->";
		echo "<div class=\"listar-dados\">";
		echo "<div class=\"listar-dados-esq\">";
		echo "".$this->ti."";
		echo "</div>";
		echo "<div class=\"listar-dados-dir\">";
		echo "<a href=\"".$this->url_bt_alterar."&cp=".$this->cp."\" title=\"Alterar\"><img src=\"".$this->diretorio_bt_imgs."/icon_bt_alterar.gif\" width=\"58\" height=\"13\" alt=\"Alterar\" /></a>"; 
		echo " <a href=\"".$this->url_bt_remover."&cp=".$this->cp."\" title=\"Remover\"><img src=\"".$this->diretorio_bt_imgs."/icon_bt_remover.gif\" width=\"58\" height=\"13\" alt=\"Remover\" /></a>";
		echo "</div>";
		echo "</div>";
		echo "<!-- xxxxx fecha item xxxxx-->";
		
		}
		
		// Exibe os botoes das galerias de exibicao
		if($this->numPg > 0)
		{
		   // Botao anterior
		   $menos	  = $this->numPg - 1;
		   $this->url = $_SERVER["PHP_SELF"].$this->url_pagina."&numPg=".$menos;
		   $this->htmlCode.= "<a href=\"".$this->url."\" title=\"Anterior\">Anterior</a> ";
		}
		for($i = 0;$i < $this->numPgs; $i++)
		{
		   // Botoes numericos
		   $this->url = $_SERVER["PHP_SELF"].$this->url_pagina."&numPg=".$i;
		   
		   // Marca como selecionado o numero da pagina atual
		   if ($_GET["numPg"] == $i)
		   {
		   		$paginacaoClass = "class=\"atual\"";
		   } 
		   else
		   { 
		   		$paginacaoClass = "";
		   }
		   
		   // Adiciona o numero das paginas ao codigo html
		   $this->htmlCode.= "<a href=\"".$this->url."\" title=\"".($i+1)."\" ".$paginacaoClass.">".($i+1)."</a> ";
		}
		if($this->numPg < ($this->numPgs - 1))
		{
		   // Botao proximo
		   $mais 	  = $this->numPg + 1;
		   $this->url = $_SERVER["PHP_SELF"].$this->url_pagina."&numPg=".$mais;
		   $this->htmlCode.= "<a href=\"".$this->url."\" title=\"Pr&oacute;ximo\">Pr&oacute;ximo</a> ";
		
		}
		
		// Escreve os botoes
		   echo "<!-- xxxxx Paginacao xxxxx-->";
	       echo "<div class=\"listar-dados-bg-paginacao\">";
		   echo "<div class=\"listar-dados-paginacao\">";
		   echo $this->htmlCode;
		   echo "</div>";
		   echo "</div>";
		   echo "<!-- xxxxx fecha Paginacao xxxxx-->";
		
	}

	
	
}// Fecha class
?>